package com.freedy.concurrent.javaThread.thread;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @author Freedy
 * @date 2021/4/20 15:34
 */
@SuppressWarnings("AlibabaAvoidManuallyCreateThread")
public class CreateThread {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 方法一，直接使用 Thread
        Thread t1 = new Thread() {
            @Override
            public void run() {
                // 要执行的任务
            }
        };
        t1.start();

        //方法二，使用 Runnable 配合 Thread
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                // 要执行的任务
            }
        };
        Thread t2 = new Thread(runnable);
        t2.start();

        //方法三，FutureTask 配合 Thread
        FutureTask<Integer> task3 = new FutureTask<>(() -> {
            // 要执行的任务
            return 100;
        });
        // 参数1 是任务对象; 参数2 是线程名字，推荐
        new Thread(task3, "t3").start();
        // 主线程阻塞，同步等待 task 执行完毕的结果
        Integer result = task3.get();
        System.out.println(result);
    }
}
